home *** CD-ROM | disk | FTP | other *** search
/ NetNews Offline 2 / NetNews Offline Volume 2.iso / news / comp / sys / cbm / 4257 < prev    next >
Encoding:
Internet Message Format  |  1996-08-05  |  1.9 KB

  1. Path: news.mcs.net!not-for-mail
  2. From: supercat@MCS.COM (John Payson)
  3. Newsgroups: comp.sys.cbm,comp.os.misc,alt.comp.hardware.homebuilt,comp.sys.apple2,comp.sys.apple2.programmer,comp.sys.atari.8bit
  4. Subject: Re: 6502 Multitasking OS announce
  5. Date: 19 Mar 1996 19:10:59 -0600
  6. Organization: /usr/lib/news/organi[sz]ation
  7. Message-ID: <4inlv3$jet@Venus.mcs.com>
  8. References: <4i94fs$stj@narses.hrz.tu-chemnitz.de> <4ik00v$9r@fishlab7.fsh.mtu.edu> <4im8k0$gud@gatekeeper.liffe.com> <4iml11$s69@narses.hrz.tu-chemnitz.de>
  9. NNTP-Posting-Host: venus.mcs.com
  10.  
  11. [crossposted because I'm suggesting a technique useable on all 6502 machines]
  12.  
  13. In article <4iml11$s69@narses.hrz.tu-chemnitz.de>,
  14. Andre Fachat <fachat@physik.tu-chemnitz.de> wrote:
  15. >They disable Multitasking during their critical sections. The problem
  16. >with the C64 is, that is doesn't have atomic test&set operations. So all
  17. >task switches have to be disabled to test a semaphore, or when you enter
  18. >a critical region.
  19.  
  20. Sure the 6502 has an atomic test-and-set style operation; my preferred
  21. implementation [for example, to ensure that MyRoutine can only be called
  22. once] is...
  23.  
  24. MyFlag:
  25.     .db    $FF
  26.  
  27. MyRoutine:
  28.     inc    MyFlag
  29.     bne    MyRtnEnd
  30.     .. do my routine
  31. MyRtnEnd:
  32.     dec    MyFlag
  33.     rts
  34.  
  35. If MyFlag is $FF when I start MyRoutine, then either the inc will happen
  36. before another instance of MyRoutine is started [in which case, I'll be
  37. able to enter] or else it won't [in which case, the second instance will
  38. get in].  Other variations include shift or rotate instructions but I
  39. don't remember the flag semantics for those; if ROR set the overflow flag
  40. with the old value of bit 7, that would be nice but I don't think it does.
  41. -- 
  42. -------------------------------------------------------------------------------
  43.  supercat@mcs.com    |  "Je crois que je ne vais jamais voir...  |   J\_/L
  44.  John Payson         |   Un animal aussi beau qu'un chat."       |  ( o o )
  45.